﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Core.DAL;

namespace BAL.eCorp
{
    public class Nxbs
    {
        #region Region: Khai báo hằng
        const string CONST_TABLE_NAME = "Nxb";
        #endregion

        #region Region: Khai báo biến
        protected int _NxbId;
        protected string _NxbName = string.Empty;
        // Hệ thống
        protected DateTime? _createDate = null;
        protected string _createUser = string.Empty;
        protected DateTime? _editDate = null;
        protected string _editUser = string.Empty;
        #endregion

        #region Region: Định nghĩa thuộc tính
        /// <summary>
        /// Mã người liên hệ, tư tăng
        /// </summary>
        public int NxbID
        {
            get { return _NxbId; }
            set { _NxbId = value; }
        }
        /// <summary>
        /// Họ tên người liên hệ
        /// </summary>
        public string NxbName
        {
            get { return _NxbName; }
            set { _NxbName = value; }
        }
        /// <summary>
        /// Ngày tạo
        /// </summary>
        public DateTime? CreateDate
        {
            get { return _createDate; }
            set { _createDate = value; }
        }
        /// <summary>
        /// Người tạo
        /// </summary>
        public string CreateUser
        {
            get { return _createUser; }
            set { _createUser = value; }
        }
        /// <summary>
        /// Ngày tạo
        /// </summary>
        public DateTime? EditDate
        {
            get { return _editDate; }
            set { _editDate = value; }
        }
        /// <summary>
        /// Người tạo
        /// </summary>
        public string EditUser
        {
            get { return _editUser; }
            set { _editUser = value; }
        }
        #endregion

        #region Region: Định nghĩa phương thức
        /// <summary>
        /// 
        /// </summary>
        public Nxbs()
        {
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="reader"></param>
        public Nxbs(SqlDataReader reader)
        {
            if (reader != null && !reader.IsClosed)
            {
                _NxbId = reader.GetInt32(reader.GetOrdinal("NxbID"));
                _NxbName = reader.GetString(reader.GetOrdinal("NxbName"));
                // Hệ thống
                if (!reader.IsDBNull(reader.GetOrdinal("CreateDate")))
                    _createDate = reader.GetDateTime(reader.GetOrdinal("CreateDate"));
                if (!reader.IsDBNull(reader.GetOrdinal("CreateUser")))
                    _createUser = reader.GetString(reader.GetOrdinal("CreateUser"));
                if (!reader.IsDBNull(reader.GetOrdinal("EditDate")))
                    _editDate = reader.GetDateTime(reader.GetOrdinal("EditDate"));
                if (!reader.IsDBNull(reader.GetOrdinal("EditUser")))
                    _editUser = reader.GetString(reader.GetOrdinal("EditUser"));
            }
        }
        /// <summary>
        /// Truy xuất thông tin liên hệ theo NxbID
        /// </summary>
        /// <returns></returns>
        public static Nxbs GetByID(Nxbs o)
        {
            Nxbs obj = new Nxbs();
            DBHelp db = new DBHelp();
            db.AddParameter("@NxbID", o.NxbID);
            SqlDataReader reader = db.ExecuteReader("sp_Nxb_Select", CommandType.StoredProcedure);
            if (reader.Read())
            {
                obj = new Nxbs(reader);
            }
            reader.Close();
            return obj;
        }
        /// <summary>
        /// Truy xuất tất cả mẫu thông tin liên hệ
        /// </summary>
        /// <returns></returns>
        public static IList<Nxbs> GetAll()
        {
            DBHelp db = new DBHelp();
            IList<Nxbs> list = new List<Nxbs>();
            SqlDataReader reader = db.ExecuteReader("sp_Nxb_SelectAll", CommandType.StoredProcedure);
            while (reader.Read())
            {
                list.Add(new Nxbs(reader));
            }
            reader.Close();
            return list;
        }
        /// <summary>
        /// Cập nhập mẫu thông tin liên hệ
        /// </summary>
        /// <param name="o"></param>
        public static void Update(Nxbs o)
        {
            DBHelp db = new DBHelp();
            db.AddParameter("@NxbID", o.NxbID);
            db.AddParameter("@NxbName", o.NxbName);
            db.AddParameter("@EditDate", DateTime.Now.ToShortDateString());
            db.AddParameter("@EditUser", o.CreateUser);
            db.ExecuteNonQuery("sp_Nxb_Update", CommandType.StoredProcedure);
        }
        /// <summary>
        /// Thêm mới mẫu thông tin liên hệ
        /// </summary>
        /// <param name="o"></param>
        public static void Insert(Nxbs o)
        {
            DBHelp db = new DBHelp();
            db.AddParameter("@NxbName", o.NxbName);
            db.AddParameter("@CreateDate", DateTime.Now.ToShortDateString());
            db.AddParameter("@CreateUser", o.CreateUser);
            db.ExecuteNonQuery("sp_Nxb_Insert", CommandType.StoredProcedure);
        }
        /// <summary>
        /// Xóa mẫu thông tin liên hệ
        /// </summary>
        /// <param name="o"></param>
        public static void Delete(Nxbs o)
        {
            DBHelp db = new DBHelp();
            db.AddParameter("@NxbID", o.NxbID);
            db.ExecuteNonQuery("sp_Nxb_Delete", CommandType.StoredProcedure);
        }
        #endregion
    }
}
